Uploaded image for project: 'XMLGraphicsCommons'
  1. XMLGraphicsCommons
  2. XGC-138

Adobe XMP - NullPointerException: "XMPHandler.getCurrentProperties()" is null

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.9
    • None
    • xmp
    • None

    Description

      When calling

       XMPParser.parseXMP(new StreamSource(new StringReader(xmpString)))

      with XMP XML that contains facial recognition data, a NullPointerException is thrown:

       Caused by: javax.xml.transform.TransformerException: java.lang.NullPointerException: Cannot invoke "org.apache.xmlgraphics.xmp.PropertyAccess.setProperty(org.apache.xmlgraphics.xmp.XMPProperty)" because the return value of "org.apache.xmlgraphics.xmp.XMPHandler.getCurrentProperties()" is null
          at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:789)
          at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:395)
          at org.apache.xmlgraphics.xmp.XMPParser.parseXMP(XMPParser.java:63)
          at com.hillert.image.metadata.service.support.MetadataExtractor.getXMPMetadata(MetadataExtractor.java:146)
          ... 71 more
      Caused by: java.lang.NullPointerException: Cannot invoke "org.apache.xmlgraphics.xmp.PropertyAccess.setProperty(org.apache.xmlgraphics.xmp.XMPProperty)" because the return value of "org.apache.xmlgraphics.xmp.XMPHandler.getCurrentProperties()" is null
          at org.apache.xmlgraphics.xmp.XMPHandler.startElement(XMPHandler.java:157)
          at java.xml/com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.closeStartTag(ToXMLSAXHandler.java:206)
          at java.xml/com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.characters(ToXMLSAXHandler.java:526)
          at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.characters(AbstractSAXParser.java:555)
          at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:485)
          at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:889)
          at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:825)
          at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
          at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1224)
          at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:637)
          at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:666)
          at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:780)
          ... 74 more

      In order to reproduce, take 1 image with with at least 1 person in it and import it into Adobe Light Room Classic. Export the original image with all Metadata intact.

      Calling:

       XMPParser.parseXMP(new StreamSource(new StringReader(xmpString)))

      will fail. Taking an image without any humans will work.

      As far as I can tell the following additional XML is present in the image with the human face:

      <mwg-rs:Regions rdf:parseType="Resource">
              <mwg-rs:AppliedToDimensions stDim:h="3456" stDim:unit="pixel" stDim:w="4608"/>
              <mwg-rs:RegionList>
                <rdf:Bag>
                  <rdf:li>
                    <rdf:Description mwg-rs:Rotation="0.00000" mwg-rs:Type="Face">
                      <mwg-rs:Area stArea:h="0.27734" stArea:w="0.20801" stArea:x="0.57178" stArea:y="0.34180"/>
                    </rdf:Description>
                  </rdf:li>
                </rdf:Bag>
              </mwg-rs:RegionList>
            </mwg-rs:Regions> 

      Once you remove:

      <rdf:Description mwg-rs:Rotation="0.00000" mwg-rs:Type="Face">
        <mwg-rs:Area stArea:h="0.27734" stArea:w="0.20801" stArea:x="0.57178" stArea:y="0.34180"/>
      </rdf:Description> 

      the parsing of the XMP XML data will succeed.

      Attachments

        Activity

          People

            Unassigned Unassigned
            hillert Gunnar Hillert
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: